package com.power.domain;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

/**
    * 订单表
    */
@ApiModel(value="com-power-commonbase-domain-Order")
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class Order implements Serializable {
    /**
    * 订单ID
    */
    @ApiModelProperty(value="订单ID")
    private Long orderId;

    /**
    * 订购用户ID
    */
    @ApiModelProperty(value="订购用户ID")
    private String openId;

    /**
    * 订购流水号
    */
    @ApiModelProperty(value="订购流水号")
    private String orderNumber;

    /**
    * 总值
    */
    @ApiModelProperty(value="总值")
    private BigDecimal totalMoney;

    /**
    * 实际总值
    */
    @ApiModelProperty(value="实际总值")
    private BigDecimal actualTotal;

    /**
    * 订单备注
    */
    @ApiModelProperty(value="订单备注")
    private String remarks;

    /**
    * 订单状态 1:待付款 2:待发货 3:待收货 4:待评价 5:成功 6:失败
    */
    @ApiModelProperty(value="订单状态 1:待付款 2:待发货 3:待收货 4:待评价 5:成功 6:失败")
    private Integer status;

    /**
    * 配送类型
    */
    @ApiModelProperty(value="配送类型")
    private String dvyType;

    /**
    * 配送方式ID
    */
    @ApiModelProperty(value="配送方式ID")
    private Long dvyId;

    /**
    * 物流单号
    */
    @ApiModelProperty(value="物流单号")
    private String dvyFlowId;

    /**
    * 订单运费
    */
    @ApiModelProperty(value="订单运费")
    private BigDecimal freightAmount;

    /**
    * 用户订单地址Id
    */
    @ApiModelProperty(value="用户订单地址Id")
    private Long addrOrderId;

    /**
    * 订单商品总数
    */
    @ApiModelProperty(value="订单商品总数")
    private Integer productNums;

    /**
    * 订购时间
    */
    @ApiModelProperty(value="订购时间")
    private Date createTime;

    /**
    * 订单更新时间
    */
    @ApiModelProperty(value="订单更新时间")
    private Date updateTime;

    /**
    * 付款时间
    */
    @ApiModelProperty(value="付款时间")
    private Date payTime;

    /**
    * 发货时间
    */
    @ApiModelProperty(value="发货时间")
    private Date dvyTime;

    /**
    * 完成时间
    */
    @ApiModelProperty(value="完成时间")
    private Date finallyTime;

    /**
    * 取消时间
    */
    @ApiModelProperty(value="取消时间")
    private Date cancelTime;

    /**
    * 是否已经支付，1：已经支付过，0：，没有支付过
    */
    @ApiModelProperty(value="是否已经支付，1：已经支付过，0：，没有支付过")
    private Integer isPayed;

    /**
    * 用户订单删除状态，0：没有删除， 1：回收站， 2：永久删除
    */
    @ApiModelProperty(value="用户订单删除状态，0：没有删除， 1：回收站， 2：永久删除")
    private Integer deleteStatus;

    /**
    * 0:默认,1:在处理,2:处理完成
    */
    @ApiModelProperty(value="0:默认,1:在处理,2:处理完成")
    private Integer refundSts;

    /**
    * 优惠总额
    */
    @ApiModelProperty(value="优惠总额")
    private BigDecimal reduceAmount;

    /**
    * 订单关闭原因 1-超时未支付 2-退款关闭 4-买家取消 15-已通过货到付款交易
    */
    @ApiModelProperty(value="订单关闭原因 1-超时未支付 2-退款关闭 4-买家取消 15-已通过货到付款交易")
    private Integer closeType;

    private static final long serialVersionUID = 1L;
}